#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#define GENERIC(type) \
type type##_max(type x, type y)\
{\
	return ((x) > (y) ? (x) : (y));\
}

GENERIC(int)
//int int_max(int x, int y)
//{
//	return ((x) > (y) ? (x) : (y));
//}

GENERIC(double)
//double double_max(double x, double y)
//{
//	return ((x) > (y) ? (x) : (y));
//}

int main()
{
	printf("%d\n", int_max(10, 20));
	printf("%lf\n", double_max(3.14, 6.28));
	return 0;
}

#include <stdio.h>
#define OS_MSDOS 10
#define OPTION2 2

int main()
{
#ifdef OS_UNIX
    #ifdef OPTION1
		unix_version_option1();
	#endif
	#ifdef OPTION2
		unix_version_option2();
	#endif
#elif defined(OS_MSDOS)
	#ifdef OPTION2
	msdos_version_option2();
	#endif
#endif
	return 0;
}